<?php
require_once $_SERVER['DOCUMENT_ROOT'].'/entities/Indicator.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/entities/Unit.php';
require_once $_SERVER['DOCUMENT_ROOT'].'/entities/Process.php';
/**
 * Класс для работы с показателем процесса
 */
class Indicator extends NamedEntity{
	/** Весовой коэффициент целевого показателя */
	private $weight;
	/** Показатель является целевым (true) */
	private $objective;
	/** Год, для которого определен целевой показатель */
	private $year;
	/**
	 * Плановое значение показателя, которое может быть установлено для всех структурных
	 * подразделений
	 */
	private $planValue;
	/** Идентификатор единицы измерения */
	private $unit;
	/** Идентификатор процесса, к которому относится показатель */
	private $process;
	/** Идентификатор родительского показателя */
	private $parent;
	/**
	 * Массив экземпляров класса Indicator - показатели, входящие в состав данного
	 * показателя
	 */
	private $children = array();
	/**
	 * Метод, возвращающий весовой коэффициент целевого показателя
	 * @return $this->weight Весовой коэффициент целевого показателя
	 */
	public function getWeight() {
		return $this->weight;
	}
	/**
	 * Метод, устанавливающий значение весового коэффициента целевого показателя
	 * @param $weight Значение весового коэффициента целевого показателя
	 */
	public function setWeight($weight) {
		$this->weight=0.0+$weight;
	}
	/**
	 * Метод, возвращающий показатель, являющийся целевым
	 * @return $this->objective Целевой показатель
	 */
	public function isObjective() {
		return $this->objective;
	}
	/**
	 * Метод, устанавливающий значение целевого показателя
	 * @param $objective Значение целевого показателя
	 */
	public function setObjective($objective) {
		$this->objective=(bool)$objective;
	}
	/**
	 * Метод, возвращающий год, для которого определён показатель
	 * @return $this->year Год, дял которого определён показатель
	 */
	public function getYear() {
		return $this->year;
	}
	/**
	 * Метод, устанавливающий значение года, с определённым показателем
	 * @param unknown_type $year Значение года, с определённым показателем
	 */
	public function setYear($year) {
		$this->year=(int)$year;
	}
	/** 
	 * Метод, возвращающий плановое значение показателя, которое может быть 
	 * установлено для всех структурных подразделений
	 * @return $this->planValue Плановое значение показателя, которое может быть 
	 * установлено для всех структурных подразделений
	 */
	public function getPlanValue() {
		return $this->planValue;
	}
	/**
	 * Метод, устанавливающий плановое значение показателя, которое может быть 
	 * установлено для всех структурных подразделений 
	 * @param unknown_type $planValue Плановое значение показателя
	 */
	public function setPlanValue($planValue) {
		if($planValue !== null) {
			$this->planValue = 0.0+$planValue;
		} else {
			$this->planValue = null;
		}
	}
	/**
	 * Метод, возвращающий идентификатор единицы измерения
	 * @return $this->unit Идентификатор единицы измерения
	 */
	public function getUnit() {
		return $this->unit;
	}
	/**
	 * Метод, устанавливающий значение идентификатора единицы измерения
	 * @param $unit Значение идентификатора единицы измерения
	 */
	public function setUnit(Unit $unit) {
		$this->unit = $unit;
	}
	/**
	 * Метод, возвращающий идентификатор процесса, к которому относится показатель
	 * @return $this->process Идентификатор процесса, к которому относится показатель
	 */
	public function getProcess() {
		return $this->process;
	}
	/**
	 * Метод, устанавливающий значение идентификатора процесса, к которому относится показатель
	 * @param $process Значение идентификатора процесса, к которому относится показатель
	 */
	public function setProcess(Process $process) {
		$this->process = $process;
	}
	/**
	 * Метод, возвращающий идентификатор родительского показателя
	 * @return $this->parent Идентификатор родительского показателя
	 */
	public function getParent() {
		return $this->parent;
	}
	/**
	 * Метод, устанавливающий зничение идентификатора родительского показателя
	 * @param Indicator $parent Значение идентификатор родительского показателя
	 */
	public function setParent(Indicator $parent) {
		$this->parent = $parent;
	}
	/**
	 * Метод, возвращающий массив экземпляров класса Indicator - показатели, 
	 * входящие в состав данного показателя
	 * @return $this->children Массив экземпляров класса Indicator - показатели, 
	 * входящие в состав данного показателя
	 */
	public function getChildren() {
		return $this->children;
	}
	/**
	 * Метод, добавляющий зничение показателей, входящих в состав данного показателя,
	 * в массив экземпляра класса Indicator
	 * @param Indicator $child Показатели, входящие в состав данного показателя
	 */
	public function addChild(Indicator $child) {
		$this->children[] = $child;
	}

}
?>